import request from "@/utils/request";

const COINS_BASE_URL = "/api/v1/coins";

const coinsAPI = {
  getPage(data?: CoinsRechargeRecordQuery) {
    return request<any, PageResult<CoinsRechargeRecodeVO[]>>({
      url: `${COINS_BASE_URL}/recharge/page`,
      method: "post",
      data,
    });
  },
  add(data: CoinsRechargeRecodeForm) {
    return request({
      url: `${COINS_BASE_URL}`,
      method: "post",
      data,
    });
  },
  delete(params) {
    return request({
      url: `/api/v1/coins/delete`,
      method: "get",
      params,
    });
  },
  audit(data) {
    return request({
      url: `${COINS_BASE_URL}/audit`,
      method: "put",
      data,
    });
  },
};

export default coinsAPI;

export interface CoinsRechargeRecodeVO {
  /** 主键ID */
  id: number;

  /** 类型: 1-充值, 2-退费 */
  type: 1 | 2;

  /** 付费商户ID */
  merchantUserId: number;

  /** 付费商户公司ID */
  companyId: number;

  /** 付费积分 */
  coins: number;

  /** 充值金额 (单位: 分) */
  amount: number;

  /** 第三方支付平台交易ID */
  transactionId: string;

  /** 充值状态: 0-初始化, 1-成功, 2-失败 */
  status: 0 | 1 | 2;

  /** 充值时间 (ISO 8601 格式的日期时间字符串) */
  rechargeTime: string;

  /** 退费操作用户 (可选) */
  applyUserId?: number;

  /** 备注 (可选) */
  remark?: string;

  /** 创建者 */
  createBy: string;

  /** 创建时间 (ISO 8601 格式的日期时间字符串) */
  createTime: string;

  /** 更新者 (可选) */
  updateBy?: string;

  /** 更新时间 (ISO 8601 格式的日期时间字符串, 可选) */
  updateTime?: string;

  /** 排序 (可选) */
  sort?: number;

  /** 录入类型: 1-手动, 2-银行充值 */
  enterType: 1 | 2;

  /** 充值凭证 (可选) */
  certificate?: string;
}

export interface CoinsRechargeRecordQuery {
  /** 页码 (必填), 示例: "1" */
  pageNum: number;

  /** 每页记录数 (必填), 示例: "10" */
  pageSize: number;

  /** 付费商户ID (可选) */
  merchantUserId?: string;

  /** 付费商户公司ID (可选) */
  companyId?: string;
}

export interface CoinsRechargeRecodeForm {
  /** 主键ID (可选) */
  id?: number;

  /** 类型: 1-充值, 2-退费 (必填) */
  type: 1 | 2;

  /** 付费商户ID */
  merchantUserId: number;

  /** 付费商户公司ID */
  companyId: number;

  /** 付费积分 */
  coins: number;

  /** 充值金额 (必填) */
  amount: number;

  /** 第三方支付平台交易ID */
  transactionId?: string;

  /** 充值状态: 0-初始化, 1-成功, 2-失败 */
  status: 0 | 1 | 2;

  /** 充值时间 (ISO 8601 格式) */
  rechargeTime?: string;

  /** 退费操作用户 (可选) */
  applyUserId?: number;

  /** 备注 (可选) */
  remark?: string;

  /** 创建者 */
  createBy: string;

  /** 创建时间 (ISO 8601 格式) */
  createTime: string;

  /** 更新者 (可选) */
  updateBy?: string;

  /** 更新时间 (ISO 8601 格式, 可选) */
  updateTime?: string;

  /** 排序 (可选) */
  sort?: number;

  /** 录入类型: 1-手动, 2-银行充值 */
  enterType: 1 | 2;

  /** 充值凭证 (必填) */
  certificate: string;
}
